1. Technical Field
Embodiments discussed herein generally relate to providing access to a queue to multiple agents. More particularly, certain embodiments relate to managing operation of a queue for a test bench environment.
2. Background Art
In current test benches and other software environments, queueing systems allow a queue to grow whenever a producer process needs an enqueue operation to be performed and the queue has all queue entries currently occupied. Such queue growth allows for all items to be enqueued and eventually dequeued for any subsequent processing.
However, such conventional dequeue systems do not guarantee service of all enqueued items in instances where there are multiple consumer processes variously dequeueing from the same queue. For example, if a dequeue operation does not succeed in a VHDL test bench environment, the process which invokes the dequeue operation is put into a wait state. It is possible, depending on ordering of process execution by a simulation kernel or similar software, for a consumer process to be starved as one or more other consumer processes take freshly enqueued elements before the starved process gets resumed by the kernel.
As the size, complexity and speed of test bench (or other) software environments continues to grow, they are increasingly sensitive to inefficiencies in resource allocation and utilization. Accordingly, there is a growing premium placed on incremental improvements in how queueing systems operate for such environments.